#!/bin/bash

# 获取参数 -m
while [ -n "$1" ]; do
  case "$1" in
  -m)
    mode=$2
    shift
    ;;
  *)
    echo "$1 is not an option"
    ;;
  esac
  shift
done

# 如果$mode = prodcution 则进行二次确认 默认回车取消
if [ "$mode" = "production" ]; then
  read -p "确定要上传到生产环境吗？(y/n):" confirm
  if [ "$confirm" != "y" ]; then
    echo "已取消"
    exit 1
  fi
fi

env=".env.$mode"

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"

cd $DIR

# 如果 dist.zip存在，则删除
if [ -f "dist.zip" ]; then
  rm dist.zip
fi

zip -r -q ./dist.zip dist
cd $DIR

# 读取当前目录下的所有的 .env 文件
envFiles=$(ls $env)
if [ -z "$envFiles" ]; then
  echo "没有找到 .env.$mode 文件"
  exit 1
fi

# 从.env 文件中读取环境变量 UPDATE_URL 不读取 # 注释行
UPDATE_URL=$(grep UPDATE_URL $env | grep -v '#' | cut -d '=' -f2)
if [ -z "$UPDATE_URL" ]; then
  echo "没有找到 UPDATE_URL 环境变量"
  exit 1
fi

PLATFORM=$(grep VITE_PLATFORM $env | grep -v '#' | cut -d '=' -f2)
if [ -z "$PLATFORM" ]; then
  echo "没有找到 VITE_PLATFORM 环境变量"
  exit 1
fi

# 去除 UPDATE_URL 环境变量中的双引号单引号
UPDATE_URL=$(echo $UPDATE_URL | sed "s/\"//g" | sed "s/'//g")

# 去除 PLATFORM 环境变量中的双引号单引号
PLATFORM=$(echo $PLATFORM | sed "s/\"//g" | sed "s/'//g")

# 拼接请求地址
URL="$UPDATE_URL/api/backend/updateResource"

echo "$URL platform:$PLATFORM env:$env"

# 发送 POST 请求到指定接口
RESPONSE=$(curl -s -X POST -F "zip=@dist.zip" -F "platform=$PLATFORM" $URL)

# 打印返回结果
echo "接口返回: $RESPONSE"

# 判断是否包含true
if [[ $RESPONSE =~ "true" ]]; then
  # 上传成功时间
  echo "上传成功 $(date '+%Y-%m-%d %H:%M:%S')"
else
  echo "上传失败"
  exit 1
fi

# 删除 dist.zip
rm dist.zip
